// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef FLUTTER_FLUTTERMACROS_H_
#define FLUTTER_FLUTTERMACROS_H_

#if defined(FLUTTER_FRAMEWORK)

#define FLUTTER_EXPORT __attribute__((visibility("default")))

#else  // defined(FLUTTER_SDK)

#define FLUTTER_EXPORT

#endif  // defined(FLUTTER_SDK)

#ifndef NS_ASSUME_NONNULL_BEGIN
#define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
#define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
#endif  // defined(NS_ASSUME_NONNULL_BEGIN)

/**
 Indicates that the API has been deprecated for the specifed reason. Code that
 uses the deprecated API will continue to work as before. However, the API will
 soon become unavailable and users are encouraged to immediately take the
 appropriate action mentioned in the deprecation message and the BREAKING
 CHANGES section present in the Flutter.h umbrella header.
 */
#define FLUTTER_DEPRECATED(msg) __attribute__((__deprecated__(msg)))

/**
 Indicates that the previously deprecated API is now unavailable. Code that
 uses the API will not work and the declaration of the API is only a stub meant
 to display the given message detailing the actions for the user to take
 immediately.
 */
#define FLUTTER_UNAVAILABLE(msg) __attribute__((__unavailable__(msg)))

#endif  // FLUTTER_FLUTTERMACROS_H_
